package com.lanou3g.code0408.constructor;

public class Dog {
    private String name;
    private int age;

    //构造方法:
    //1. 没有返回值: 根本就没有写 返回值的类型
    //2. 方法名与类名相同

    // 构造方法 只能够被new 这个关键字调用
    // 当new对象的时候,其实就是在调用构造方法
    // 例如:new Dog(); =>就是在调用public Dog(){}这个构造方法
    // new Dog("AA") =>其实就是在调用public Dog(String name){}这个构造方法
    public Dog(String name) {
        this.name = name;
        System.out.println(name);
        System.out.println("这里是String参数的构造方法");
    }


    //无参构造方法
    //没有任何参数,方法体里也是空的构造方法

    //1. 如果我们没有写 任何一个构造方法,那么,系统会送我们一个
    //   无参的构造方法(我们看不见)
    //2. 只要我们写了任何一个构造方法,那么系统就不送我们构造方法了

    // java => 编译(如果没有写构造方法,会加一个无参构造方法)
    // => .class文件 => JVM执行.class

    public Dog() {
        System.out.println("这里是没有参数的构造方法");
    }

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Dog(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

